home *** CD-ROM | disk | FTP | other *** search
- /* CheckFTPScript v1.7 by Grzegorz Fitrzyk SP9WUN (domagal@uci.agh.edu.pl)
-
-
- usage: rx rexx:CheckFTPScript.rexx SOURCE/K DEST/K DIR/K
- ex.: rx rexx:CheckFTPScript.rexx ram:script ram:script_new ram:download
-
- */
-
-
- parse arg source destin direct
- header='#MKFTP1'
-
- dire=pos(right(direct,1),'/')
- dir2=pos(right(direct,1),':')
- dirl=length(direct)
- extd='/'
- indsw=0
- indsw2=0
-
- if dire~=0 then direct=left(direct,dirl-1)
- if dir2~=0 then extd=''
- indsw=1
- sourceind=source||'.idx'
-
- MODE=''
- miss=0
- trn=0
- totsize=0
- nsize=0
-
- options results
-
- say
- say 'Please wait, checking directory.'
- say
- say 'Missed files:'
- say
-
- address command 'list 'direct||extd'#? files >t:list_temp'
-
- if Open(loadit, source, 'Read') then do /* Open source file.*/
- if Open(Saveit, destin, 'Write') then do /* Open destination file. */
- call writeln(Saveit,header)
- do forever
- line=Readln(loadit)
- if line="" then leave
- call makeline
- end
- end; else call error_write
- end; else call error_read
-
- say
- say 'Total number of losted files: 'miss
- say 'Total losted kbytes: 'totsize
- say
-
- quitit:
- call close(saveit)
- call close(loadit)
- address command 'delete t:list_temp force quiet'
- address command 'c:filenote 'destin' 'totsize'KB'
- exit
-
- error_read:
- say 'Cant find source file: 'source
- call quitit
-
- error_write:
- say 'Cant write destination file 'dest
- call quitit
-
- makeline:
- parse var line nctemp " " ncaddr ":" rest "#" size
- parse var rest xrest ' '
- rest=xrest
- do while tt~=0
- parse var rest "/" fname '0a'x
- tt=pos('/',fname)
- rest=fname
- end
- tt=5
- call open(loadit2,'t:list_temp',read)
- fin=0
- csize=0
- do while rt~=""
- rt=readln(loadit2)
- parse var rt rts rsize rrest /* czytaj liste plików z dysku */
- if (rts~="Directory" & rts~=":") then do
- if rest=rts then do /* czy plik w skrypcie (rest) jest zapisany na dysku (rts) */
- fin=1
- rrsize=rsize
- end
- end
- end
- csize=0
- if (rrsize='empty' | rrsize='' | rrsize='files') then rrsize=0
- rrsize=translate(rrsize,,' ')
- call getind
-
- call close(loadit2)
- rt="."
- return
-
- writedest:
- call writeln(saveit,line)
- if pos('.readme',fname)=0 then do
- say fname||' less: '||(nsize-csize)||'kB'
- end; else do
- say fname
- end
- miss=miss+1
- return
-
- getind:
- if pos('.readme',rest)=0 then do /* nie jest to plik Readme */
- if fin=1 then do
- lrsize=length(rrsize)
- if (lrsize-3)<1 then lrsize=4
- numeric digits (lrsize-3)
- csize=(rrsize/1023) /* wielkoôê pliku odczytanego z dysku */
- numeric digits 10
- end
- size=translate(size,,' ')
- nsize=size
- if nsize>csize then do /* czy wielkoôê z indeksu > od wielkoôci z dysku */
- call writedest
- trn=trn+1 /* licznik uszkodz. plików +1 */
- totsize=totsize+(nsize-csize)
- end
- call close(loadind)
- end; else do
- if fin~=1 then do
- nsize=0
- csize=0
- call writedest
- end
- end
- return
-